package com.pan.common.interview.throwable;

import java.io.FileNotFoundException;

public class ErrorAndException {
    /**
     * Error 和 Exception都是继承自Throwable
     * Error：程序无法处理的错误，编译器不做检查（如jvm崩溃，内存溢出，堆栈溢出）
     *     NoClassDefFoundException 找不到class定义的异常，
     *     StackOverFlowError 深递归导致栈被耗尽而抛出的异常
     *     OutOfMemoryError 内存溢出异常
     * Exception：程序可处理的异常，可以被捕获并恢复
     *   1、RuntimeException（
     *       运行时，如 IndexOutOfBoundsException 数组下标越界，NullPointerException,ClassCastException-类强制转换异常，
     *       IllegalArgumentException 非法传参异常， NumberFormatException 数字格式异常）
     *   2、非RuntimeException（编译时，就会检查出，文件没有找到）
     *       ClassNotFoundException
     *       IOException IO异常
     */

    private void throwError(){
        throw new StackOverflowError();
    }
    private void throwRuntimeException(){
        throw new RuntimeException();
    }
    private void throwCheckedException() throws FileNotFoundException {
        throw new FileNotFoundException();
    }

    public static void main(String[] args) throws FileNotFoundException {
        ErrorAndException eae = new ErrorAndException();
        //eae.throwError();
        //eae.throwRuntimeException();
        eae.throwCheckedException();
    }
}
